<?php
/*
 * Listar Enfermedades.
 * @Autor: Andrés Ubilla.
 */
class Listar extends TPage {

    public function onLoad($param){
        parent::onLoad($param);
        
        if(!$this->IsPostBack){
            $this->validarSession();
            $this->cargarInterfaz();
        }
    }
    
    private function validarSession(){
        $oUsuario = Util::getSession("Usuario");
        if(Util::isNullOrEmpty($oUsuario)){
            $this->Response->redirect($this->Service->constructUrl("Home"));
        }
    }
    
    private function cargarInterfaz(){
        $arrEnfermedades = $this->obtenerEnfermedades();
        $this->iniciarControles($arrEnfermedades);
    }
    
    private function obtenerEnfermedades(){
        $oEnfermedad = new Enfermedad();
        $oEnfermedadBLL = new EnfermedadBLL();
        $arrEnfermedades = $oEnfermedadBLL->listar($oEnfermedad);
        return $arrEnfermedades;
    }
    
    private function iniciarControles($arrEnfermedades){
        $mensaje = Util::getSession("Mensaje");
        if(!Util::isNullOrEmpty($mensaje)){
            $this->litAlert->Text = $mensaje;
            Util::setSession("Mensaje", null);
        }       
        
        if(count($arrEnfermedades) > 0){
            $this->pnlCabecera->Visible = false;
            $this->pnlSinRegistros->Visible = false;
            $this->pnlEnfermedades->Visible = true;            
            $this->dgEnfermedades->DataSource = $arrEnfermedades;
            $this->dgEnfermedades->dataBind();
        }else{
            $this->pnlCabecera->Visible = true;
            $this->pnlEnfermedades->Visible = false;
            $this->pnlSinRegistros->Visible = true;
        }
    }
    
    public function btnRegistrarEnfermedadOnClick($sender, $param){
        try{
            $oEnfermedad = new Enfermedad();
            $oEnfermedad->setNombre($this->txtNombre->Text);
            $oEnfermedad->setEstado(1);

            $oEnfermedadBLL = new EnfermedadBLL();
            $result = $oEnfermedadBLL->grabar($oEnfermedad);

            if(is_int($result) && $result > 1){
                $this->cargarInterfaz();
                $this->limpiarForm();
                $this->litAlert->Text = Util::setMensajeUsuario("Enfermedad registrado exitosamente.", Util::MENSAJE_OK);            
            }else{   
                $this->litAlert->Text = Util::setMensajeUsuario("Error al registrar la enfermedad, por favor vuelva a intentarlo.", Util::MENSAJE_ERROR);
            }
        } catch (Exception $e){
            throw new Exception($e->getMessage());
        }
    }
    
    public function btnEliminarOnClick(){
        try{
            $id = $this->idEnfermedad->Value;

            $oEnfermedadBLL = new EnfermedadBLL();
            $resultado = $oEnfermedadBLL->eliminar();

            if(!Util::isNullOrEmpty($resultado)){
                $this->litAlert->Text = Util::setMensajeUsuario("Error al eliminar la enfermedad, por favor vuelva a intentarlo.", Util::MENSAJE_ERROR);
            }else{ 
                $this->cargarInterfaz();
                $this->litAlert->Text = Util::setMensajeUsuario("Enfermedad eliminada exitosamente.", Util::MENSAJE_OK);            
            }
        } catch (Exception $e){
            throw new Exception($e->getMessage());
        }
    }
    
    private function limpiarForm(){
        $this->txtNombre->Text = "";
    }
}
?>
